#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //如何给这个按钮添加点击的实际功能？
    //实际上就是给按钮的点击操作，关联一个处理函数
    //当用户点击的时候，就会执行这个处理函数
    //这属于Qt中信号槽机制

    //ui->pushButton就表示这个界面上的按钮
    connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);
    //connect(界面上的按钮,点击按钮时自动触发此信号,处理槽函数所处的的对象的地址,槽函数地址);
    //connect(指定谁发出的信号，指定发出了个什么信号，指定谁来处理这个信号，指定此信号具体如何处理);

    //要用到connect()接口
    //Qt中的connect接口是QObject这个类所提供的静态函数
    //connect()接口的作用就是：连接信号和槽(与网络中的connect获取连接没有关系)
    //参数
    //ui->pushButton:访问到widget.ui界面中的按钮控件
    //对于pushButton:当在Qt Designer中创建一个控件的时候
    //此时，就会给这个控件分配一个objectName属性并给这个属性自动生成值
    //这个属性的值必须是在界面中唯一的，相当于这个按钮控件的名称就是objectName属性的值，即pushButton
    //这个按钮控件的objectName属性的值可以自定义修改
    //在编译的时候，qmake会根据widget.ui文件会在ui_widget.h文件中自动生成的代码里就会包含一个pushButton的成员变量
    //这个变量的名称就是根据widget.ui中按钮控件的objectName的值来确定的
    //在objectName中设置成什么名称，ui_widget.h中生成的变量名就叫什么名称，就可以根据这个名称来获取对应的控件的变量了

    //qmake在预处理这个widget.ui文件时，就会根据这里的objectName生成对应的C++代码
    //c++代码中该QPushButton对象的变量名称就是这里的objectName
    //这个变量就是ui属性中的成员变量
}

void Widget::handleClick()
{
    //获取这个按钮中的文本内容
    //ui->pushButton获取这个按钮
    //ui->pushButton->text()获取按钮中的文本内容
    if(ui->pushButton->text()==QString("Hello World"))
    {
        //获取此按钮并给此按钮中的文本内容赋值
        ui->pushButton->setText("Hello Qt");
    }
    else
    {
        ui->pushButton->setText("Hello World");
    }
}

Widget::~Widget()
{
    delete ui;
}

